package com.dhcc;

import java.util.Arrays;
import java.util.List;

import org.drools.core.base.RuleNameEndsWithAgendaFilter;
import org.junit.Test;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;

/**
 * 测试比较操作符
 * @author 16552
 *
 */
public class DroolsTest2 {

	/**
	 * contains测试
	 */
	@Test
	public void testDrools1() {
		// 1、获取KieService
		KieServices kieServices = KieServices.Factory.get();
		// 2、从KieService中获取KieContainer
		KieContainer kieContainer = kieServices.newKieClasspathContainer();
		// 3、从KieSession中获取KieSession
		KieSession kieSession = kieContainer.newKieSession();
		// 4、通过kieSession插入规则引擎的工作内存中
		// 创建fact对象
		ComparisonOpeator opeator = new ComparisonOpeator();
		// 设置原始价格 
		//opeator.setNames("张三");
		//opeator.setNames("李四");
		opeator.setNames("王五");
		List<String> list = Arrays.asList("张三","李四");
		opeator.setList(list);
		kieSession.insert(opeator);
		// 5、激活规则，由Drools框架自动匹配规则，并自动执行规则
		kieSession.fireAllRules();
		// 6、关闭会话
		kieSession.dispose();
	}
	
	/**
	 * memberOf测试
	 */
	@Test
	public void testDrools2() {
		// 1、获取KieService
		KieServices kieServices = KieServices.Factory.get();
		// 2、从KieService中获取KieContainer
		KieContainer kieContainer = kieServices.newKieClasspathContainer();
		// 3、从KieSession中获取KieSession
		KieSession kieSession = kieContainer.newKieSession();
		// 4、通过kieSession插入规则引擎的工作内存中
		// 创建fact对象
		ComparisonOpeator opeator = new ComparisonOpeator();
		// 设置原始价格 
		//opeator.setNames("张三");
		opeator.setNames("李四");
//		 opeator.setNames("王五");
		// List<String> list = Arrays.asList("张三","李四");
		// opeator.setList(list);
		kieSession.insert(opeator);
		// 5、激活规则，由Drools框架自动匹配规则，并自动执行规则
		kieSession.fireAllRules();
		// 6、关闭会话
		kieSession.dispose();
	}

	/**
	 * 执行制定规则
	 */
	@Test
	public void testDrools3() {
		// 1、获取KieService
		KieServices kieServices = KieServices.Factory.get();
		// 2、从KieService中获取KieContainer
		KieContainer kieContainer = kieServices.newKieClasspathContainer();
		// 3、从KieSession中获取KieSession
		KieSession kieSession = kieContainer.newKieSession();
		// 4、通过kieSession插入规则引擎的工作内存中
		// 创建fact对象
		ComparisonOpeator opeator = new ComparisonOpeator();
		// 设置原始价格 
		//opeator.setNames("张三");
		opeator.setNames("李四");
//		 opeator.setNames("王五");
		// List<String> list = Arrays.asList("张三","李四");
		// opeator.setList(list);
		kieSession.insert(opeator);
		// 5、激活规则，由Drools框架自动匹配规则，并自动执行规则
		kieSession.fireAllRules(new RuleNameEndsWithAgendaFilter("test_comparsion_not matches1"));
		// 6、关闭会话
		kieSession.dispose();
	}
}
